package com.wlm.controller;

import com.wlm.pojo.Door;
import com.wlm.pojo.Order;
import com.wlm.service.DoorService;
import com.wlm.service.OrderService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.annotation.Resource;
import java.util.List;

/**
 * 门店订单控制器
 * 处理门店订单相关的请求
 */
@Controller
public class OrderController {

    @Resource
    private OrderService orderService;

    @Resource
    private DoorService doorService;

    /**
     * 显示所有订单和门店信息。
     * @param model 存储订单和门店信息。
     * @return 订单列表页面。
     */
    @RequestMapping("/orderList")
    public String findAllDoor(Model model){
        List<Order> orders = orderService.findOrders();
        List<Door> doors = doorService.findDoors();
        model.addAttribute("orderList",orders);
        model.addAttribute("doorList",doors);
        return "order_list";
    }

    /**
     * 添加一条订单记录。
     * @param order 要添加的订单记录。
     * @return 重定向到订单列表页面。
     */
    @RequestMapping("/orderAdd")
    public String orderAdd(Order order){
        orderService.addOrder(order);
        return "redirect:/orderList";
    }

    /**
     * 根据订单的 ID 删除一条订单记录。
     * @param id 订单的 ID。
     * @return 重定向到订单列表页面。
     */
    @RequestMapping("/orderDelete")
    public String orderDelete(Integer id){
        orderService.removeOrderById(id);
        return "redirect:/orderList";
    }

    /**
     * 显示一条订单记录的详细信息。
     * @param id 订单的 ID。
     * @param model 存储订单和门店信息。
     * @return 订单更新页面。
     */
    @RequestMapping("/orderInfo")
    public String orderInfo(Integer id,Model model){
        Order order = orderService.findOrderById(id);
        List<Door> doors = doorService.findDoors();
        model.addAttribute("order",order);
        model.addAttribute("doorList",doors);
        return "order_update";
    }

    /**
     * 更新一条订单记录。
     * @param order 要更新的订单记录。
     * @return 重定向到订单列表页面。
     */
    @RequestMapping("/orderUpdate")
    public String orderUpdate(Order order){
        orderService.updateOrder(order);
        return "redirect:/orderList";
    }

    /**
     * 显示所有门店信息，并跳转到订单添加页面。
     * @param model 存储门店信息。
     * @return 订单添加页面。
     */
    @RequestMapping("/findAllDoorToOrderAdd")
    public String findAllDoorToOrderAdd(Model model){
        List<Door> doors = doorService.findDoors();
        model.addAttribute("doorList",doors);
        return "order_add";
    }

}